맨위로가기

가상 파일 시스템

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

가상 파일 시스템(VFS)은 다양한 파일 시스템에 접근하기 위한 추상화 계층으로, 운영체제가 파일 시스템의 종류에 관계없이 파일에 접근할 수 있도록 한다. VFS는 객체 지향 프로그래밍의 오버로딩 개념을 활용하여 구현되며, 시스템 호출을 해당 파일이 속한 파일 시스템에 맞는 동작으로 매핑한다. 유닉스 계열 시스템, 윈도우, OS/2 등 다양한 운영체제에서 구현되었으며, 사용자 공간 파일 시스템(FUSE)을 통해 사용자 공간 코드도 VFS에 연결될 수 있다. 또한, 단일 파일 가상 파일 시스템은 파일 또는 파일 그룹을 컨테이너로 취급하여 파일 시스템처럼 사용할 수 있게 해준다.

더 읽어볼만한 페이지

  • 가상화 소프트웨어 - X86 가상화
    X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
  • 가상화 소프트웨어 - VM웨어 v스피어
    VM웨어 v스피어는 VM웨어에서 개발한 서버 가상화 플랫폼으로, 다양한 운영체제 지원, 가상 시스템 확장, vMotion 개선, 스토리지 관리 효율성 향상 등의 특징을 가지며 클라우드 환경 지원 강화 및 관리 효율성 증대에 초점을 맞추어 지속적으로 업데이트되고 있다.
  • 파일 시스템 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
  • 파일 시스템 - ZFS
    ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
가상 파일 시스템
일반 정보
유형추상 파일 시스템
설명실제 파일 시스템 위에 존재하는 추상 계층
응용 프로그램이 다양한 파일 시스템과 상호 작용하는 방법을 표준화
기능
주요 기능파일 시스템 독립성 제공
다양한 파일 시스템 유형에 대한 단일 인터페이스 제공
유닉스와 같은 운영 체제에서 널리 사용
구현시스템 호출을 사용하여 파일 시스템 작업을 추상화
각 파일 시스템에 대한 특정 드라이버를 사용하여 실제 파일 시스템과 상호 작용
장점
이식성응용 프로그램이 기본 파일 시스템에 종속되지 않도록 함
유연성다양한 파일 시스템 유형을 쉽게 지원
단순성파일 시스템 상호 작용을 위한 일관된 인터페이스 제공
단점
오버헤드추상화 계층으로 인해 약간의 성능 오버헤드 발생 가능
복잡성올바르게 구현하기 어려울 수 있음
예시
사용 예유닉스 가상 파일 시스템
리눅스 가상 파일 시스템
macOS 가상 파일 시스템
윈도우 가상 파일 시스템

2. 구현

가상 파일 시스템(VFS)은 객체 지향 방식(OOP)의 오버로딩 개념을 적용하여 구현된다. 읽기/쓰기와 같은 시스템 호출이 발생하면, 해당 파일이 속한 파일 시스템에 맞는 동작이 수행되도록 매핑한다.[1]


2. 1. 유닉스 계열 시스템

유닉스 계열 시스템에서 최초의 가상 파일 시스템 (VFS) 메커니즘 중 하나는 1985년 썬 마이크로시스템즈가 SunOS 2.0에 도입했다.[2] 이를 통해 유닉스 시스템 호출은 로컬 UFS 파일 시스템과 원격 NFS 파일 시스템에 투명하게 접근할 수 있었다. 이러한 이유로 썬으로부터 NFS 코드를 라이선스한 유닉스 공급업체들은 종종 썬의 VFS 설계를 복사했다. 다른 파일 시스템들도 이에 연결될 수 있었다. 썬에서 개발된 MS-DOS FAT 파일 시스템의 구현이 SunOS VFS에 연결되었지만, SunOS 4.1까지 제품으로 출시되지는 않았다. SunOS 구현은 System V Release 4의 VFS 메커니즘의 기반이 되었다.

존 하이데만은 실험적인 Ficus 파일 시스템을 위해 SunOS 4.0에서 ''스태킹'' VFS를 개발했다. 이 설계는 의미가 다르지만 유사한 파일 시스템 유형 간에 코드 재사용을 제공했다(예: 암호화 파일 시스템은 비 암호화 파일 시스템의 모든 이름 지정 및 스토리지 관리 코드를 재사용할 수 있었다). 하이데만은 그의 논문 연구의 일환으로 이 작업을 4.4BSD에서 사용하도록 적용했다. 이 코드의 후손은 macOS를 포함한 현대 BSD 파생 제품의 파일 시스템 구현을 뒷받침한다.

다른 유닉스 가상 파일 시스템으로는 System V Release 3의 파일 시스템 스위치, Ultrix의 일반 파일 시스템, 그리고 리눅스의 VFS가 있다. OS/2마이크로소프트 윈도우에서 가상 파일 시스템 메커니즘은 설치 가능한 파일 시스템이라고 불린다.

사용자 공간 파일 시스템 (FUSE) 메커니즘을 통해 사용자 공간 코드는 리눅스, NetBSD, FreeBSD, OpenSolaris, 그리고 macOS의 가상 파일 시스템 메커니즘에 연결될 수 있다.

마이크로소프트 윈도우에서 가상 파일 시스템은 사용자 공간 셸 네임스페이스 확장을 통해서도 구현할 수 있지만, 윈도우의 최저 수준 파일 시스템 접근 응용 프로그래밍 인터페이스를 지원하지 않으므로, 셸 네임스페이스 확장으로 구현된 파일 시스템에 모든 응용 프로그램이 접근할 수 있는 것은 아니다. KIO와 GVfs/GIO는 KDE와 GNOME 데스크톱 환경(각각)에서 유사한 메커니즘을 제공하며, FUSE 기술을 사용하여 시스템에 원활하게 통합될 수 있지만, 유사한 제한 사항을 가지고 있다.

2. 2. 사용자 공간 파일 시스템 (FUSE)

사용자 공간 파일 시스템(FUSE) 메커니즘을 통해 사용자 공간 코드는 리눅스, NetBSD, FreeBSD, OpenSolaris, 그리고 macOS의 가상 파일 시스템 메커니즘에 연결될 수 있다.[1]

마이크로소프트 윈도우에서 가상 파일 시스템은 사용자 공간 셸 네임스페이스 확장을 통해서도 구현할 수 있지만, 윈도우의 최저 수준 파일 시스템 접근 응용 프로그래밍 인터페이스를 지원하지 않으므로, 셸 네임스페이스 확장으로 구현된 파일 시스템에 모든 응용 프로그램이 접근할 수 있는 것은 아니다. KDEKIO나 GNOME의 GVfs/GIO도 이와 비슷한 기구를 제공하고 있지만, 유사한 한계가 있다. 그러나 FUSE를 활용할 수도 있으므로, 원활하게 시스템에 통합하는 것도 가능하다.

3. 단일 파일 가상 파일 시스템

가상 파일 시스템은 때때로 소프트웨어를 사용하여 구체적인 파일 시스템의 기능을 제공하는 관리 가능한 컨테이너 역할을 하는 파일 또는 파일 그룹(반드시 구체적인 파일 시스템 내부에 존재하지 않아도 됨)을 가리킨다. 이러한 컨테이너의 예로는 CBFS Storage 또는 단일 파일 가상 파일 시스템이 있으며, PCTask나 WinUAE 같은 에뮬레이터에서 사용된다.

이러한 유형의 파일 시스템은 중앙 집중화되어 있어 제거하기 쉽다는 장점이 있다. 단일 파일 가상 파일 시스템은 모든 파일 시스템(가상 또는 기타)에서 예상되는 모든 기본 기능을 포함할 수 있지만, 그 내부 구조에 접근하려면 일반적으로 단일 파일 가상 파일 시스템을 사용하도록 특별히 작성된 프로그램이 필요하다(범용 액세스를 허용하는 드라이버를 통한 구현 대신). 또 다른 주요 단점은 다른 가상 파일 시스템에 비해 성능이 상대적으로 낮다는 것이다. 이는 주로 가상 파일 시스템에서 데이터를 쓰고 삭제할 때 가상 파일을 셔플링하는 비용 때문이다.[3][4]

3. 1. 단일 파일 가상 파일 시스템 구현 예시

PCTask, WinUAE, whefs (whefs영어) 등은 단일 파일 가상 파일 시스템의 예시이다. 에뮬레이터인 PCTask와 WinUAE는 파일 시스템 데이터뿐만 아니라 에뮬레이션된 디스크 레이아웃도 캡슐화하여 OS 설치를 다른 소프트웨어처럼 쉽게 다룰 수 있게 해준다. 이를 통해 이동식 미디어나 네트워크를 통해 쉽게 전송할 수 있다.

단일 파일 가상 파일 시스템은 일반적인 파일 시스템의 기능을 모두 구현하지만, 내부 구조에 접근하려면 전용 프로그램이 필요한 경우가 많다. (드라이버를 통해 구현하면 범용 접근이 가능하다.) 일반 파일 접근보다 성능이 약간 떨어질 수 있으며, 특히 가상 파일 시스템 내 파일 쓰기나 삭제 시 성능 저하가 발생할 수 있다.

; PCTask

아미가 에뮬레이터 PCTask에 대한 자세한 내용은 해당 문서를 참조하라.

; WinUAE

윈도우용 UAE인 WinUAE에 대한 자세한 내용은 해당 문서를 참조하라.

3. 1. 1. PCTask

아미가 에뮬레이터 PCTask는 인텔 8088 기반 PC (4.77MHz 클럭)를 에뮬레이션했으며, 이후에는 25MHz 클럭의 80486SX도 지원했다. PCTask 사용자는 아미가 파일 시스템에 대용량 파일을 생성하여 에뮬레이터에서 실제 PC 하드 디스크처럼 가상으로 접근할 수 있었다. 이 파일은 FAT16 파일 시스템으로 포맷하여 MS-DOS 또는 Windows 파일을 저장할 수 있었다.[3][4]

3. 1. 2. WinUAE

WinUAE는 윈도우용 UAE로서, 윈도우의 큰 단일 파일을 아미가 파일 시스템으로 취급할 수 있게 해준다. WinUAE에서 이 파일은 ''하드파일''이라고 불린다.[5]

UAE는 또한 호스트 파일 시스템(윈도우, 리눅스, macOS, 아미가OS)의 디렉터리를 아미가 파일 시스템으로 취급할 수 있다.[6]

3. 1. 3. 기타

PCTask나 UAE (emulator)|WinUAE|WinUAE영어와 같은 에뮬레이터, 오라클의 VirtualBox, 마이크로소프트의 Virtual PC, VMware와 같은 가상화 소프트웨어도 하드 디스크 에뮬레이션을 통해 가상 파일 시스템을 구현한다.[3][4] 이러한 소프트웨어는 단일 파일이나 파일 그룹을 컨테이너로 취급하여, 마치 파일 시스템처럼 조작할 수 있게 해준다.

이러한 방식은 집중 관리와 삭제가 용이하다는 장점이 있다. 그러나 일반적인 파일 접근보다 성능이 약간 저하될 수 있으며, 특히 가상 파일 시스템 내 파일에 쓰거나 삭제할 때 성능 저하가 발생할 수 있다. 에뮬레이터나 가상화 소프트웨어는 파일 시스템뿐만 아니라 하드 디스크 레이아웃도 에뮬레이트한다.

; PCTask

Amiga 상의 에뮬레이터인 PCTask는 Intel 8088 4.77MHz (이후 Intel486 SX 25MHz)를 탑재한 PC를 에뮬레이트한다. Amiga 파일 시스템 상에 큰 파일을 생성하여 에뮬레이터가 이를 PC의 하드 디스크처럼 가상으로 접근하게 한다. FAT16으로 포맷하여 MS-DOS나 윈도우를 동작시킬 수 있었다.

; WinUAE

Windows 버전 UAE (emulator)|UAE|UAE영어인 WinUAE는 Windows에서 큰 파일을 생성하여 이를 Amiga의 파일 시스템으로 취급한다. WinUAE에서는 이 파일을 'hardfile'이라고 부른다.[5] UAE에서는 호스트 시스템(Windows, Linux, Mac OS, AmigaOS)의 파일 시스템 상 지정 디렉터리 하위를 Amiga 파일 시스템으로 접근할 수도 있다.[6]

이 외에도 보안이나 편리성 때문에 단일 파일을 특정 애플리케이션에서만 파일 시스템으로 접근하게 하는 경우도 있다.

  • whefs[7] - POSIX 준수 OS에서 사용 가능한 오픈 소스 C 언어 라이브러리로, 하나의 파일을 파일 시스템으로 취급하는 애플리케이션을 C 언어 및 C++로 작성할 수 있다.
  • Embedded File System (EFS)[8] - 오픈 소스 크로스 플랫폼 C++ 구현.
  • Solid File System (SolFS)[9] - 크로스 플랫폼으로 암호화와 압축 기능을 갖춘 단일 파일 가상 파일 시스템


Java를 이용하여 아카이브 파일을 전개하지 않고 디렉터리와 파일 그룹으로 접근하는 소프트웨어도 단일 파일 가상 파일 시스템의 일종이다. FTP나 HTTP로 서버에 접근하여 서버 측 디렉터리 트리를 로컬 파일 시스템처럼 접근하는 것도 있다.

  • [http://truezip.java.net TrueZIP]
  • Apache Commons의 [http://jakarta.apache.org/commons/vfs/index.html VFS 기능]
  • [http://millscript.sourceforge.net/projects/millscript-vfs/index.html MillScript VFS]

참조

[1] 웹사이트 Linux Storage Stack Diagram https://www.thomas-k[...] Thomas-Krenn.AG 2015-06-01
[2] 논문 Vnodes: An Architecture for Multiple File System Types in Sun UNIX http://www.arl.wustl[...] 1986-06
[3] 웹사이트 Emulation on Amiga http://www.simon.moo[...]
[4] 웹사이트 EMULATORS http://www.unitechel[...]
[5] 웹사이트 Help About WinUAE http://winuaehelp.ba[...]
[6] 웹사이트 Help About WinUAE http://winuaehelp.ba[...]
[7] 웹사이트 whefs https://code.google.[...]
[8] 웹사이트 ScalingWeb's Embedded File System in C++ http://www.scalingwe[...]
[9] 웹사이트 Solid File System http://www.eldos.com[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com